Skip to main content

Docker Registry

Table of Contents

创建本地 docker 仓库

 $ docker pull registry

$ docker images
> registry latest 3c11102b9417 2 months ago 23.7MB

$ docker run -d -p 5000:5000 \ # 宿主 5000 端口映射到容器 5000 端口
--restart=always \ # 容器随宿主启动
--volume /opt/registry:/var/lib/registry \ # 宿主目录映射到容器目录
--name registry registry # 容器名称 镜像名称

$ docker ps
> 9f5e1fa8dab6 registry:latest "/entrypoint.sh /etc…" 8 weeks ago Up 3 weeks 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp

注: /var/lib/registry 是容器内存放镜像的路径

本地配置

本地配置 docker

 $ ifconfig
> ......
> 10.58.14.96 # 查看宿主机器 IP
> ......

$ vim /etc/docker/daemon.json
> ......
> "insecure-registries": [
"10.58.14.96:5000" # 添加本地仓库地址
]
> ......

$ systemctl daemon-reload # 重新加载 docker 配置文件
$ systemctl restart docker # 重新启动 docker

推送镜像

将本地镜像推送至本地仓库

 $ docker images
> REPOSITORY TAG IMAGE ID CREATED SIZE
> mysql latest bdfb0ec4d54a 2 months ago 599MB

$ docker tag mysql:latest 10.58.14.96:5000/mysql:latest
$ docker images
> REPOSITORY TAG IMAGE ID CREATED SIZE
> mysql latest bdfb0ec4d54a 2 months ago 599MB
> 10.58.14.96:5000/mysql latest bdfb0ec4d54a 2 months ago 599MB

$ docker push 10.58.14.96:5000/mysql:latest
$ curl -XGET http://10.58.14.96:5000/v2/_catalog
> {"repositories":["mysql"]}

镜像管理

管理私有仓库镜像

 $ curl -XGET  http://10.58.14.96:5000/v2/_catalog
> {"repositories":["mysql"]}

$ curl -XGET http://10.58.14.96:5000/v2/mysql/tags/list
> {"name":"mysql","tags":["latest"]}

删除私有仓库镜像, 官方删除方式只删除元数据, 镜像未删除
可以直接删除镜像文件方式删除仓库镜像

  # 直接进入映射路径删除镜像文件或进入容器路径删除镜像
$ rm -rf {map_path}/docker/registry/v2/repositories/{image}
$ docker exec registry rm -rf /var/lib/registry/docker/registry/v2/repositories/{images}

$ rm -rf /var/lib/registry/docker/registry/v2/repositories/mysql

$ curl -XGET http://10.58.14.96:5000/v2/_catalog
> {"repositories":[]}